<script>
	import Vue from 'vue'
	import store from './store/index.js'
	import updateCustomBarInfo from './tuniao-ui/libs/function/updateCustomBarInfo.js'

	import {
		webSocket,
		pingInterval,
		timeout
	} from './common/config.js'
	import {
		requestPermission
	} from "@/tools/permision.js"
	import {
		isEmpty
	} from "@/tools/tools.js"

	export default {
		globalData: {
			isAuditVersion: true, // 是否审核版本默认是，用来隐藏一些功能
		},
		onLaunch: function() {

			// #ifdef APP-PLUS
			uni.onPushMessage((res) => {
				console.log(res.data)
			})

			plus.push.addEventListener('click', function(msg) {

			}, false);
			//监听接收透传消息事件
			plus.push.addEventListener('receive', function(msg) {



				//处理点击消息的业务逻辑代码
				if (msg.payload.content && msg.payload.title == 'tiezi') {
					uni.navigateTo({
						url: '/circlePages/details?id=' + msg.payload.content
					})

				}
				if (msg.payload.content && msg.payload.title == 'chat') {
					this.navigateToFn({
						url: '/minePages/chat/talk?toid=' + msg.payload.content,
						checkLogin: true
					})

				}

				if (msg.payload.content && msg.payload.title == 'msg') {
					uni.navigateTo({
						url: '/homePages/about?type=msg&id=' + msg.payload.content
					})

				}


				//处理透传消息的业务逻辑代码
				// console.log("receive",msg)
				//plus.nativeUI.alert("recevice:" + JSON.stringify(msg))
			}, false);
			// #endif
			uni.getSystemInfo({
				success: function(e) {
					// #ifndef H5
					// 获取手机系统版本
					const system = e.system.toLowerCase()
					const platform = e.platform.toLowerCase()
					// 判断是否为ios设备
					if (platform.indexOf('ios') != -1 && (system.indexOf('ios') != -1 || system.indexOf(
							'macos') != -1)) {
						Vue.prototype.SystemPlatform = 'apple'
					} else if (platform.indexOf('android') != -1 && (system.indexOf('android') != -1)) {
						Vue.prototype.SystemPlatform = 'android'
					} else {
						Vue.prototype.SystemPlatform = 'devtools'
					}
					// #endif
				}
			})

			// 获取设备的状态栏信息和自定义顶栏信息
			// store.dispatch('updateCustomBarInfo')
			updateCustomBarInfo().then((res) => {
				console.log(res)
				store.commit('$tStore', {
					name: 'vuex_status_bar_height',
					value: res.statusBarHeight
				})
				store.commit('$tStore', {
					name: 'vuex_custom_bar_height',
					value: res.customBarHeight
				})
				store.commit('$tStore', {
					name: 'vuex_window_height',
					value: res.windowHeight
				})
			})

			// #ifdef MP
			//更新检测
			if (wx.canIUse('getUpdateManager')) {
				const updateManager = wx.getUpdateManager();
				updateManager && updateManager.onCheckForUpdate((res) => {
					if (res.hasUpdate) {
						updateManager.onUpdateReady(() => {
							uni.showModal({
								title: '更新提示',
								content: '新版本已经准备就绪，是否需要重新启动应用？',
								success: (res) => {
									if (res.confirm) {
										uni.clearStorageSync() // 更新完成后刷新storage的数据
										updateManager.applyUpdate()
									}
								}
							})
						})

						updateManager.onUpdateFailed(() => {
							uni.showModal({
								title: '已有新版本上线',
								content: '小程序自动更新失败，请删除该小程序后重新搜索打开哟~~~',
								showCancel: false
							})
						})
					} else {
						//没有更新
					}
				})
			} else {
				uni.showModal({
					title: '提示',
					content: '当前微信版本过低，无法使用该功能，请更新到最新的微信后再重试。',
					showCancel: false
				})
			}
			// #endif


			this.$socket.connect(); //
			let config = this.setConfigFn(); // 设置全局的config 数据

			uni.$on('socketError', loginBoxFlag => {
				this.$socket.connect(); //
			});

		},
		onShow: function() {

			// console.log('App Show')
		},
		onHide: function() {

			// console.log('App Hide')
		},
		methods: {
			// 校验授权位置权限
			// type：类型，0-表示不用跳转，只展示；1-表示可以跳转到设置页
			async checkAuthLocation() {
				// #ifdef APP-PLUS
				const systemSetting = uni.getSystemSetting()
				const perDesc = "该应用需要你的位置，以便为你提供附近好物推荐、动态或切换位置"
				// console.log("手机定位服务是否开启***", systemSetting.locationEnabled)
				if (!systemSetting.locationEnabled) {
					uni.showModal({
						content: platform == "android" ? "为给您提供更好的服务，请开启手机的定位服务。一般在屏幕顶部下滑面板中即可找到" :
							"为给您提供更好的服务，请开启手机的定位服务",
						showCancel: false,
						confirmText: "知道了"
					})
					return {
						type: 0,
						status: false,
						msg: `请开启手机的定位服务，${perDesc}`
					}
				}
				// #endif

				// 获取位置权限
				return requestPermission("location").then((_locationPermission) => {
					// if (_locationPermission == 1) {
					// 	return new Promise((resolve, reject) => {
					// 		uni.getLocation({
					// 			success: async (res) => {
					// 				// console.log('App getLocation 1', res)
					// 				// console.log('App 全局上报位置---', result)
					// 				resolve({
					// 					type: 1,
					// 					status: true,
					// 					msg: perDesc
					// 				})
					// 			},
					// 			fail: (res) => {
					// 				console.log('获取位置失败---', res)
					// 				uni.showToast({
					// 					title: "获取位置失败，请稍后重试",
					// 					icon: "none",
					// 					duration: 3000
					// 				})
					// 				resolve({
					// 					type: 1,
					// 					status: true,
					// 					msg: perDesc
					// 				})
					// 			}
					// 		})
					// 	})
					// }

					return {
						type: 1,
						status: true,
						msg: perDesc
					}
				}).catch(() => {
					return {
						type: 1,
						status: true,
						msg: perDesc
					}
				})
			},

			// 系统定位，获取位置信息
			async handleSysGetLocation() {
				// {
				//     "type": "wgs84",
				//     "altitude": 75.13456788296,
				//     "latitude": 16.31656881576,
				//     "longitude": 106.43452987199,
				//     "speed": null,
				//     "accuracy": 5.43661689783874,
				//     "address": {
				//         "city": "xx市",
				//         "country": "中国",
				//         "district": "xx区",
				//         "province": "xx省",
				//         "street": "街道"
				//     },
				//     "errMsg": "getLocation:ok"
				// }
				return new Promise(async (resolve, reject) => {
					await this.checkAuthLocation()
					uni.showLoading({
						title: "定位中...",
					})
					uni.getLocation({
						type: this.$isIos ? "wgs84" : "gcj02",
						geocode: true,
						success: (res) => {
							uni.hideLoading()
							console.log('success', res)
							resolve(res)
							// this.FormData.lat = res.latitude
							// this.FormData.lng = res.longitude
							// // #ifdef APP-PLUS
							// this.FormData.city = res.address.city
							// // #endif
							// // #ifndef APP-PLUS
							// this.GDAPI(res.longitude, res.latitude)
							// // #endif
						},
						fail: (err) => {
							console.log('错误', err)
							uni.hideLoading()
							uni.showToast({
								title: "无法获取您的定位",
								icon: 'none',
								duration: 2000
							})
							reject(err)
						}
					})
				})
			},
			// 实名认证判断
			checkRealnameVerify() {
				return new Promise(async (resolve, reject) => {
					let result = await this.$request({
						loading: 1,
						method: 'post',
						url: '/api/user/setindex',
						data: {}
					});
					if (result.statusCode == 200) {
						if (result.data.code == 200) {
							let datas = result.data.data;
							// 已实名
							if (datas.is_renzheng == 1) {
								resolve(true)
								return
							}
							uni.showModal({
								title: "温馨提示",
								content: "根据监管要求，用户发布图文信息需实名认证，请前往我的-设置-实名认证，感谢支持。",
								confirmText: "去实名",
								cancelText: "稍后",
								success: res => {
									if (res.confirm) {
										uni.navigateTo({
											url: "/minePages/set"
										})
									}
								}
							})
							resolve(false)
						} else {
							uni.showToast({
								icon: 'none',
								title: result.data.msg
							});
							resolve(false)
						}
					} else {
						uni.showToast({
							icon: 'none',
							title: '服务错误，请联系管理员'
						});
						resolve(false)
					}
				})
			},
			// 返回是否开启了青少年模式
			hasOpneAdolescentModel(autoJump = false) {
				const _adolescentModelPassword = uni.getStorageSync('adolescentModelPassword')
				if (!isEmpty(_adolescentModelPassword)) {
					this.globalData["isOpenModel"] = true
					if (autoJump) {
						uni.reLaunch({
							url: '/minePages/adolescentModel/index'
						})
					}
					return true
				}
				this.globalData["isOpenModel"] = false
				return false
			},
		}
	}
</script>

<style lang="scss">
	/* 注意要写在第一行，同时给style标签加入lang="scss"属性 */
	@import './tuniao-ui/index.scss';
	@import './tuniao-ui/iconfont.css';
	@import './tuniao-ui/icondk.css';

	page {
		background-color: #efefef;
	}

	// 页面初始化加载效果
	.fade-in {
		opacity: 1;
		transition: opacity 0.3s ease-in-out;
	}

	.fade-out {
		opacity: 0;
		transition: opacity 0.3s ease-in-out;
	}
	/* 文字截取*/
	.clamp-text-1 {
		-webkit-line-clamp: 1;
		display: -webkit-box;
		-webkit-box-orient: vertical;
		text-overflow: ellipsis;
		overflow: hidden;
	}
	
	.clamp-text-2 {
		-webkit-line-clamp: 2;
		display: -webkit-box;
		-webkit-box-orient: vertical;
		text-overflow: ellipsis;
		overflow: hidden;
	}
</style>